/*!
 * @file pca.h
 * @author Yasutomo Kawanishi
 * @date Last Change: 2011/Feb/23.
 * */
#ifndef __BACKGROUND_IMAGE_GENERATOR_PCA__
#define __BACKGROUND_IMAGE_GENERATOR_PCA__
#include "common.h"
#include <vector>

class BackgroundImageGeneratorPCA{
public:
		BackgroundImageGeneratorPCA(unsigned int dims);
		~BackgroundImageGeneratorPCA();
		BackgroundImageGeneratorPCA(const BackgroundImageGeneratorPCA& other);
		const BackgroundImageGeneratorPCA& operator=(const BackgroundImageGeneratorPCA& other);

		void generate(const cv::Mat& src, cv::Mat& dst);
//		void update(const cv::Mat& src);
		void train(const cv::Mat& src);
		void train(const std::vector<cv::Mat>& src);

		void save(const std::string& path)const;
		void load(const std::string& path);

private:
	bool isInit;
	unsigned int dims;
	cv::PCA *pca;
};
#endif